#include <stdio.h>
#define N 3                                    //人数
int main()
  {
      int a[N] = {0}, out = 0, num = 0, *flag;
      flag = a;           //指向首地址

      while (1){                                  //循环报数
          if(*flag == 0){                            //如果没有淘汰 0表示没出局
              if (out == (N - 1)) break;          //如果仅剩一人，结束

              num++;                              //报数 +1+1
              num %= 3;                           //最大为3，到了3就从0开始 逢3筛出来
              if(num == 0) //为0(即3)出局
              {                      
                  *flag = 1;  //出局，*flag变为1标志 1表示出局
                  out++;      //出局人+1
              }
          }

          flag++;   //下一个人

          if (flag == a + N)  //如果flag的地址等于（a的首地址+N）的地址        
              flag = a;      //重新从首地址开始，第二次筛选           
      }

      printf("最后剩余者的编号是: %ld\n", flag-a+1); //打印那个最后值的地址
      
  }
